// ---------------------------------------------------
// #filter过滤器
// #tools.js同步实现filter
// ---------------------------------------------------
// 处理ie、safari浏览器日期格式的问题
import { formatDate, parseTime } from '@/utils/dateUtil'

export default {
  /**
   * 自定义格式化时间
   * @param {String | Object} time 时间戳 或者 new Date的obj
   * @param {String} cFormat 需要的时间格式 default {y}-{m}-{d} {h}:{i}:{s}
   * @returns {String} default {y}-{m}-{d} {h}:{i}:{s}
   */
  formatParseTime(time, cFormat) {
    return parseTime(new Date(time), cFormat)
  },
  /**
   * 格式化日期
   */
  formatDate(val, type) {
    return formatDate(val, type)
  },

  /**
   * 格式化邮箱，中间部分星号显示
   */
  formatEmail(str) {
    const reg = new RegExp(/(.{2}).+(.{2}@.+)/g)
    const email = str.replace(reg, '$1****$2')

    return email
  },

  /**
   * 格式化紫金等级
   */
  formatLevel(score) {
    let level = ''
    score = parseFloat(score)
    if (score > 0 && score <= 55) {
      level = 'U1'
    } else if (score > 55 && score <= 63) {
      level = 'U2'
    } else if (score > 63 && score <= 67) {
      level = 'U3'
    } else if (score > 67 && score <= 74) {
      level = 'U4'
    } else if (score > 74 && score <= 100) {
      level = 'U5'
    }
    return level
  },

  /**
   * 通过页码等数据获取序号
   */
  formatIndexMethod(index, page = 1, pageSize = 10) {
    return pageSize * (page - 1) + 1 + index || index
  },

  /**
   * 讲文本格式化为 %(百分比)样式
   * 当type === typeStr格式化，否则直接返回
   */
  formatReportRate(txt, type = '', typeStr = '') {
    if (type === typeStr && !isNaN(Number(txt))) {
      return `${txt}%`
    } else {
      return txt.toString() || '-'
    }
  },

  /**
   * 格式化评分区间
   */
  formatFormula(str) {
    switch (str) {
      case '>':
        return '('
      case '>=':
        return '['
      case '<':
        return ')'
      case '<=':
        return ']'
      default:
        return ''
    }
  },

  /**
   * 格式化模型调用结果
   */
  filterResult(str) {
    switch (str) {
      case 'FAILED':
        return '拒绝'
      case 'AUDIT':
        return '人工审核'
      case 'PASS':
        return '通过'
      default:
        return str || '人工审核'
    }
  },

  /**
   * 格式化价格，保留3位小数
   */
  formatPrice(val) {
    const num = typeof val === 'number' ? val : Number(val)
    if (isNaN(num)) {
      return '-'
    } else {
      // 判断正负
      const isAbs = num > -1
      // 转换成正数
      const price = Math.abs(num / 1000)
      // 保留三位小数
      const pricePart = price.toFixed(2)
      const parts = pricePart.split('.')

      parts[0] = parts[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1' + ',')
      return `${isAbs ? '' : '-'}¥${parts.join('.')}`
    }
  }
}
